package common

import (
	"3jc.com/gin-vue-admin/model"
	"fmt"
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
	"log"
)

var DB *gorm.DB

//连接数据库 初始化
func InitDB() *gorm.DB {

	// mysql
	//driverName := "mysql"
	host := "localhost"        //数据服务地址
	port := 3306               //端口
	database := "ginessential" //数据库
	username := "root"         //登录用户名
	password := "root"         //登录密码
	charset := "utf8mb4"

	dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=%s&parseTime=True&loc=Local",
		username,
		password,
		host,
		port,
		database,
		charset)

	log.Println(dsn)

	db, err := gorm.Open(mysql.New(mysql.Config{
		DSN:                       dsn,
		DefaultStringSize:         256,   // string 类型字段的默认长度
		DisableDatetimePrecision:  true,  // 禁用 datetime 精度，MySQL 5.6 之前的数据库不支持
		DontSupportRenameIndex:    true,  // 重命名索引时采用删除并新建的方式，MySQL 5.7 之前的数据库和 MariaDB 不支持重命名索引
		DontSupportRenameColumn:   true,  // 用 `change` 重命名列，MySQL 8 之前的数据库和 MariaDB 不支持重命名列
		SkipInitializeWithVersion: false, // 根据当前 MySQL 版本自动配置
	}), &gorm.Config{})
	if err != nil {
		panic("数据库连接失败, error" + err.Error())
	}

	db.AutoMigrate(&model.User{}) //自动新建

	return db
}

func GetDB() *gorm.DB {
	DB = InitDB()
	return DB
}
